home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Programmer Disk
/
The Programmer Disk (Microforum).iso
/
xpro
/
basic1
/
pro12
/
calmouse.bas
< prev
next >
Wrap
BASIC Source File
|
1990-04-01
|
3KB
|
160 lines
DECLARE FUNCTION IsMono% ()
DECLARE FUNCTION Rand% (MaxValue%)
DECLARE SUB DspButtons (Buttons%, PX%, PY%)
DECLARE SUB Normal ()
DECLARE SUB PrintMsg (PosX%, PosY%, PrintTxt$)
DECLARE SUB Reverse ()
DECLARE SUB SetUpGrid ()
'Program: Call Mouse Demo Program
' CALMOUSE.BAS
DEFINT A-Z
'$INCLUDE: 'QB.BI'
'$INCLUDE: 'MOUSE.BI'
DIM SHARED SWidth, VideoAddr
DIM SHARED PrL, PrR, PrLr, PrM
DIM SHARED PrLM, PrMR, PrAll, PrNone
DIM SHARED ForeGround, BackGround, HiLight
DIM SHARED ButtonLeft, ButtonRight, ButtonMiddle
True = -1: False = 0: SWidth = 80
'Mouse button press definitions
PrL = 1: PrR = 2: PrLr = 3: PrM = 4
PrLM = 5: PrMR = 6: PrAll = 7: PrNone = 0
'Button definitions
ButtonLeft = 0
ButtonRight = 1
ButtonMiddle = 2
IF IsMono THEN
ForeGround = 7: BackGround = 0
ELSE
ForeGround = 3: BackGround = 0
END IF
SCREEN 0: CLS : SetUpGrid
IF ThereIsAMouse THEN
PrintMsg 24, 1, "Mouse Installed"
SLEEP (1)
IF NOT MouseReset THEN
PrintMsg 24, 1, "No mouse reset"
END
ELSE
PrintMsg 24, 1, "Mouse Reset"
END IF
ELSE
PrintMsg 24, 1,_
"Sorry, there's no mouse on this system"
END
END IF
LOCATE 25, 1: Reverse: PRINT SPACE$(80);
LOCATE 25, 1
PRINT "(Press Left Button to change mouse,";
PRINT " Right Button to Quit)";
MouseOn
ClearButton ButtonLeft
DO WHILE Buttons <> PrR
Buttons = GetMouseStatus(MPosX, MPosY)
DspButtons Buttons, MPosX, MPosY
IF Buttons = PrL THEN
MouseCharacter = Rand(255)
IF IsMono THEN
SetMouseSoftCursor MouseCharacter,7,0
ELSE
FGColor = Rand(7)
BGColor = Rand(7)
SetMouseSoftCursor_
MouseCharacter, FGColor, BGColor
END IF
MouseOn
PrintMsg 2, 40, "MouseCharacter: "_
+ STR$(MouseCharacter)
PrintMsg 3, 40, "MouseFGColor: "_
+ STR$(FGColor)
PrintMsg 4, 40, "MouseBGColor: "_
+ STR$(BGColor)
ClearButton ButtonLeft
END IF
LOOP
MouseOff
END
SUB DspButtons (Buttons, PX, PY)
Reverse
LOCATE 24, 42: PRINT "Buttons: ";
SELECT CASE Buttons
CASE PrNone
PRINT "None ";
CASE PrL
PRINT "Left ";
CASE PrR
PRINT "Right ";
CASE PrLr
PRINT "Left & right ";
CASE PrM
PRINT "Middle ";
CASE PrLM
PRINT "Left & middle ";
CASE PrMR
PRINT "Middle & right";
CASE PrAll
PRINT "All ";
CASE ELSE
PRINT "Unknown " + STR$(Buttons);
END SELECT
LOCATE 24, 66: PRINT USING "XPos=## "; PX;
LOCATE 24, 74: PRINT USING "YPos=##"; PY;
Normal
END SUB
FUNCTION IsMono
DIM InRegs AS RegType
InRegs.AX = &HF00
INTERRUPT &H10, InRegs, OutRegs
IsMono = (OutRegs.AX MOD 256 = 7)
END FUNCTION
SUB Normal
COLOR ForeGround, BackGround
END SUB
SUB PrintMsg (PosX, PosY, PrintTxt$)
LOCATE PosX, PosY: Reverse
PRINT LEFT$(PrintTxt$ + STRING$(40, " "), 40);
Normal
END SUB
FUNCTION Rand (MaxValue)
Rand = INT((MaxValue + 1) * RND)
END FUNCTION
SUB Reverse
COLOR BackGround, ForeGround
END SUB
SUB SetUpGrid
LOCATE 1, 1
FOR I = 1 TO 80
PRINT RIGHT$(STR$(I), 1);
NEXT I
LOCATE 2, 1
FOR I = 2 TO 25
LOCATE I, 1
PRINT USING "##"; I;
NEXT I
Reverse
LOCATE 24, 1: PRINT SPACE$(80);
Normal
END SUB